/* Représente un noeud dans l'arbre Dtd
 */

#ifndef _DTD_NODE
#define _DTD_NODE


/* Cardinalité d'un noeud */
enum NodeCard
{
	ONE, /* Un, pas plus, pas moins */
	ONE_PLUS, /* >= 1 */
	ZERO_PLUS, /* >= 0 */
	ZERO_ONE /* 0 ou 1 */
};

/* Type du noeud */
enum NodeType
{
	NODE_ELEMENT,	 /* Noeud ELEMENT */
	NODE_COMPOSITE	/* Noeud COMPOSITE */
};

/* Représente un noeud */
class DtdNode
{
public :
	DtdNode(enum NodeType p_nodeType);

	/* Renvoie le type du noeud */
	enum NodeType getNodeType() const;

public :
	/* Cardinalité associé à ce noeud */
	enum NodeCard card;
	/* Noeud parent */
	DtdNode *parent;

private :
	/* Type du noeud */
	enum NodeType nodeType;
};


#endif
